﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TouchSocket.Rpc;
using TouchSocket.Rpc.TouchRpc;
using Updater.Core;
namespace Updater.Server
{
    public class UpRpcServer:RpcServer
    {
        [Description("获取服务器版本")]
        [TouchRpc]
        [MyRpcActionFilter]
        public int GetLatestVersion()
        {
            //1.先判断文件是否存在
           if(! File.Exists("UpdateConfiguration.xml"))
            {
                //不存在则新建一个文件
                UpdateConfiguration updateConfiguration=new UpdateConfiguration();
                updateConfiguration.Save("UpdateConfiguration.xml");
            }
            
          
            UpdateConfiguration config = FastJson.Load<UpdateConfiguration>("UpdateConfiguration.xml");

            return config.ClientVersion;
        }
        [Description("获取服务端UpdateConfiguration")]
        [TouchRpc]
        [MyRpcActionFilter]
        public UpdateConfiguration GetLatestConfig()
        {
            if (!File.Exists("UpdateConfiguration.xml"))
            {
                //不存在则新建一个文件
                UpdateConfiguration updateConfiguration = new UpdateConfiguration();
                updateConfiguration.Save("UpdateConfiguration.xml");
            }
            //此处代码为 每有100次获取更新文件的请求则清空服务端控制台
            Program.UpdateCount++;
            if (Program.UpdateCount>=100)
            {
                Program.UpdateCount = 0;
                Console.Clear();
            }

            UpdateConfiguration config = FastJson.Load<UpdateConfiguration>("UpdateConfiguration.xml");
            return config;
        }
        [Description("通知服务的检查更新")]
        [TouchRpc]
        [MyRpcActionFilter]
        public void UpdateConfiguration(List<string> files,string token)
        {
            ///token 是密文,用于验证只有指定的客户端才可以通知文件更新
            if (token!="123")
            {
                return;
            }
            Program.UpdateConfiguration(files);
        }

    }
}
